SGX tutorial memo
part1
sgx: CPU命令セットの集合
enclave
秘匿性、integrityを確保するアドレス領域(アプリケーションが利用する)
権限・CPUモードに関わらずenclave外からメモリ領域にアクセスできない
特別な保護チェックを実行する命令実行からのみ
Enclaveメモリ上のデータは暗号化され、暗号化されたデータのみのやり取りが行われる
暗号鍵はCPUに保持されアクセスすることはできない
保護メモリの領域は64MBか124MB。(BIOSによって設定)メモリ中に5~20このenclaveを同時作成可能。
SGXを利用するアプリケーションは2つのcomponentに分割
Trusted component: enclave
Untrusted component: OS, VMM, BIOS, SMM,
それぞれのcomponentのinterfaceは最小限に。
attestation
特定のEnclaveが構成されたことを示すプロセス。
Local Attestation
1つのapplicationで複数のenclaveを保持しテイル状態で互いのenclaveが信頼できることを確認するための検証。
ECDHのによりsession keyにより共有データは暗号化
Remote Attestation
SGX上のユニークな鍵データをベースにリモートサーバーに転送
sealing
秘匿データを保護されていないメモリやストレージ上に配置するための暗号化処理。
Enclave Identity
特定のenclaveにより一意に生成される鍵を利用するので古いEnclaveで新しいEnclaveで作成されたデータにアクセスすることはできない。
アプリケーションのアップデートにより古い鍵が使用できなくなるようなケース
Sealing Identity
同一権限を持っている複数のEnclaveが互いにsealing/unsealing可能